/*
 * Copyright (c) 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.gan.model;

import com.google.api.client.http.HttpHeaders;
import com.google.api.client.json.GenericJson;
import com.google.api.client.json.JsonString;
import com.google.api.client.util.Key;
import com.google.api.client.util.DateTime;

/**
 * Model definition for Gan.Advertiser.
 *
 * An AdvertiserResource.
 *
 * This class models an object which will be transmitted to or from the Gan service. To reduce the
 * data transferred during service requests, you may remove members that contain data elements that
 * your application does not need.
 *
 * For a detailed explanation, see: <a href="http://code.google.com/p/google-api-java-
 * client/wiki/Json"> http://code.google.com/p/google-api-java-client/wiki/Json</a>
 *
 * @author Google, Inc.
 */
public final class Advertiser extends GenericJson {

  /**
   * Category that this advertiser belongs to. A valid list of categories can be found here:
   * http://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en&answer=107581
   */
  @Key("category")
  private String category;

  /**
 * Category that this advertiser belongs to. A valid list of categories can be found here:
 * http://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en&answer=107581
 */
  public String getCategory() {
    return category;
  }

  /**
 * Category that this advertiser belongs to. A valid list of categories can be found here:
 * http://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en&answer=107581
 */
  public Advertiser setCategory(String category) {
    this.category = category;
    return this;
  }
  /**
   * Allows advertisers to submit product listings to Google Product Search.
   */
  @Key("productFeedsEnabled")
  private Boolean productFeedsEnabled;

  /** Allows advertisers to submit product listings to Google Product Search. */
  public Boolean getProductFeedsEnabled() {
    return productFeedsEnabled;
  }

  /** Allows advertisers to submit product listings to Google Product Search. */
  public Advertiser setProductFeedsEnabled(Boolean productFeedsEnabled) {
    this.productFeedsEnabled = productFeedsEnabled;
    return this;
  }
  /**
   * The kind for an advertiser. The kind for one entity.
   */
  @Key("kind")
  private String kind;

  /** The kind for an advertiser. The kind for one entity. */
  public String getKind() {
    return kind;
  }

  /** The kind for an advertiser. The kind for one entity. */
  public Advertiser setKind(String kind) {
    this.kind = kind;
    return this;
  }
  /**
   * URL of the website this advertiser advertises from.
   */
  @Key("siteUrl")
  private String siteUrl;

  /** URL of the website this advertiser advertises from. */
  public String getSiteUrl() {
    return siteUrl;
  }

  /** URL of the website this advertiser advertises from. */
  public Advertiser setSiteUrl(String siteUrl) {
    this.siteUrl = siteUrl;
    return this;
  }
  /**
   * Phone that this advertiser would like publishers to contact them with.
   */
  @Key("contactPhone")
  private String contactPhone;

  /** Phone that this advertiser would like publishers to contact them with. */
  public String getContactPhone() {
    return contactPhone;
  }

  /** Phone that this advertiser would like publishers to contact them with. */
  public Advertiser setContactPhone(String contactPhone) {
    this.contactPhone = contactPhone;
    return this;
  }
  /**
   * Description of the website the advertiser advertises from.
   */
  @Key("description")
  private String description;

  /** Description of the website the advertiser advertises from. */
  public String getDescription() {
    return description;
  }

  /** Description of the website the advertiser advertises from. */
  public Advertiser setDescription(String description) {
    this.description = description;
    return this;
  }
  /**
   * A rank based on commissions paid to publishers over the past 90 days. A number between 1 and 4
   * where 4 means the top quartile (most money paid) and 1 means the bottom quartile (least money
   * paid).
   */
  @Key("payoutRank")
  private String payoutRank;

  /**
 * A rank based on commissions paid to publishers over the past 90 days. A number between 1 and 4
 * where 4 means the top quartile (most money paid) and 1 means the bottom quartile (least money
 * paid).
 */
  public String getPayoutRank() {
    return payoutRank;
  }

  /**
 * A rank based on commissions paid to publishers over the past 90 days. A number between 1 and 4
 * where 4 means the top quartile (most money paid) and 1 means the bottom quartile (least money
 * paid).
 */
  public Advertiser setPayoutRank(String payoutRank) {
    this.payoutRank = payoutRank;
    return this;
  }
  /**
   * The sum of fees paid to publishers divided by the total number of clicks over the past seven
   * days. Values are multiplied by 100 for display purposes.
   */
  @Key("epcSevenDayAverage")
  private Object epcSevenDayAverage;

  /**
 * The sum of fees paid to publishers divided by the total number of clicks over the past seven
 * days. Values are multiplied by 100 for display purposes.
 */
  public Object getEpcSevenDayAverage() {
    return epcSevenDayAverage;
  }

  /**
 * The sum of fees paid to publishers divided by the total number of clicks over the past seven
 * days. Values are multiplied by 100 for display purposes.
 */
  public Advertiser setEpcSevenDayAverage(Object epcSevenDayAverage) {
    this.epcSevenDayAverage = epcSevenDayAverage;
    return this;
  }
  /**
   * The longest possible length of a commission (how long the cookies on the customer's browser
   * last before they expire).
   */
  @Key("commissionDuration")
  private Integer commissionDuration;

  /**
 * The longest possible length of a commission (how long the cookies on the customer's browser last
 * before they expire).
 */
  public Integer getCommissionDuration() {
    return commissionDuration;
  }

  /**
 * The longest possible length of a commission (how long the cookies on the customer's browser last
 * before they expire).
 */
  public Advertiser setCommissionDuration(Integer commissionDuration) {
    this.commissionDuration = commissionDuration;
    return this;
  }
  /**
   * The status of the requesting publisher's relationship this advertiser.
   */
  @Key("status")
  private String status;

  /** The status of the requesting publisher's relationship this advertiser. */
  public String getStatus() {
    return status;
  }

  /** The status of the requesting publisher's relationship this advertiser. */
  public Advertiser setStatus(String status) {
    this.status = status;
    return this;
  }
  /**
   * The sum of fees paid to publishers divided by the total number of clicks over the past three
   * months. Values are multiplied by 100 for display purposes.
   */
  @Key("epcNinetyDayAverage")
  private Object epcNinetyDayAverage;

  /**
 * The sum of fees paid to publishers divided by the total number of clicks over the past three
 * months. Values are multiplied by 100 for display purposes.
 */
  public Object getEpcNinetyDayAverage() {
    return epcNinetyDayAverage;
  }

  /**
 * The sum of fees paid to publishers divided by the total number of clicks over the past three
 * months. Values are multiplied by 100 for display purposes.
 */
  public Advertiser setEpcNinetyDayAverage(Object epcNinetyDayAverage) {
    this.epcNinetyDayAverage = epcNinetyDayAverage;
    return this;
  }
  /**
   * Email that this advertiser would like publishers to contact them with.
   */
  @Key("contactEmail")
  private String contactEmail;

  /** Email that this advertiser would like publishers to contact them with. */
  public String getContactEmail() {
    return contactEmail;
  }

  /** Email that this advertiser would like publishers to contact them with. */
  public Advertiser setContactEmail(String contactEmail) {
    this.contactEmail = contactEmail;
    return this;
  }
  /**
   * The requested advertiser.
   */
  @Key("item")
  private Advertiser item;

  /** The requested advertiser. */
  public Advertiser getItem() {
    return item;
  }

  /** The requested advertiser. */
  public Advertiser setItem(Advertiser item) {
    this.item = item;
    return this;
  }
  /**
   * Date that this advertiser was approved as a Google Affiliate Network advertiser.
   */
  @Key("joinDate")
  private DateTime joinDate;

  /** Date that this advertiser was approved as a Google Affiliate Network advertiser. */
  public DateTime getJoinDate() {
    return joinDate;
  }

  /** Date that this advertiser was approved as a Google Affiliate Network advertiser. */
  public Advertiser setJoinDate(DateTime joinDate) {
    this.joinDate = joinDate;
    return this;
  }
  /**
   * URL to the logo this advertiser uses on the Google Affiliate Network.
   */
  @Key("logoUrl")
  private String logoUrl;

  /** URL to the logo this advertiser uses on the Google Affiliate Network. */
  public String getLogoUrl() {
    return logoUrl;
  }

  /** URL to the logo this advertiser uses on the Google Affiliate Network. */
  public Advertiser setLogoUrl(String logoUrl) {
    this.logoUrl = logoUrl;
    return this;
  }
  /**
   * The ID of this advertiser.
   */
  @Key("id") @JsonString
  private Long id;

  /** The ID of this advertiser. */
  public Long getId() {
    return id;
  }

  /** The ID of this advertiser. */
  public Advertiser setId(Long id) {
    this.id = id;
    return this;
  }
  /**
   * The name of this advertiser.
   */
  @Key("name")
  private String name;

  /** The name of this advertiser. */
  public String getName() {
    return name;
  }

  /** The name of this advertiser. */
  public Advertiser setName(String name) {
    this.name = name;
    return this;
  }


  private HttpHeaders responseHeaders;

  /**
   * Sets the HTTP headers returned with the server response, or <code>null</code>.
   *
   * This member should only be non-null if this object was the top level element of a response. For
   * example, a request that returns a single Advertiser would include the response headers, while a
   * request which returns an array of Advertiser, would have a non-null response header in the
   * enclosing object only.
   */
  public void setResponseHeaders(HttpHeaders responseHeaders) {
    this.responseHeaders = responseHeaders;
  }

  /**
   * Returns the HTTP headers that were returned with the server response, or
   * <code>null</code>.
   */
  public HttpHeaders getResponseHeaders() {
    return responseHeaders;
  }
}
